home *** CD-ROM | disk | FTP | other *** search
- /*
- ##########################################################################
- #### ####
- #### The MusicBox Project ####
- #### ============================ ####
- #### ####
- #### Archive-GUI.c ####
- #### ####
- #### Version 2.1os -- September 29, 2000 ####
- #### ####
- #### Copyright (C) 1994 Thomas Dreibholz ####
- #### 2000 Molbachweg 7 ####
- #### 51674 Wiehl ####
- #### Germany ####
- #### ####
- #### EMail: Dreibholz@bigfoot.com ####
- #### WWW: http://www.bigfoot.com/~dreibholz ####
- #### ####
- ##########################################################################
- */
- /***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
- /* MusicBoxArchive Benutzeroberfläche */
-
- #include "Archive-GUI.h"
- #include "Archive.h"
-
- extern BOOL LowRes,FastExit;
-
- struct Screen *Scr = NULL;
- UBYTE *PubScreenName = NULL;
- APTR VisualInfo = NULL;
- struct Window *KatalogWnd = NULL;
- struct Gadget *KatalogGList = NULL;
- struct Menu *KatalogMenus = NULL;
- struct IntuiMessage KatalogMsg;
- struct TextFont *Font = NULL;
- struct Gadget *KatalogGadgets[4];
- extern struct List Liste1,Liste2;
- UWORD KatalogLeft = 0;
- UWORD KatalogTop = 32;
- UWORD KatalogWidth = 632;
- UWORD KatalogHeight = 246;
- UBYTE *KatalogWdt = (UBYTE *)TITEL;
-
- struct TextAttr topaz11 = {
- ( STRPTR )"times.font", 15, 0x00, 0x00 };
-
- #define TEXTE 16
-
- UBYTE *Texte[TEXTE]=
- {
- "Project",
- "Load preferences",
- "Save preferences",
- NULL,
- "Setup printer...",
- "Print...",
- NULL,
- "Iconify...",
- "About...",
- "Help...",
- NULL,
- "Quit Music Box Archive",
- "Preferences",
- "Auto-save",
- "Search",
- "Search title..."
- };
-
- struct NewMenu KatalogNewMenu[] = {
- NM_TITLE, NULL, NULL, 0, NULL, NULL,
- NM_ITEM, NULL, (STRPTR)"L", 0, 0L, (APTR)PrefsLaden,
- NM_ITEM, NULL, (STRPTR)"S", 0,0L, (APTR)PrefsSichern,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, NULL, (STRPTR)"W", 0,0L, (APTR)SetupPrinter,
- NM_ITEM, NULL, (STRPTR)"P", 0,0L, (APTR)Print,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, NULL, (STRPTR)"I", 0, 0L, 0xFFFFFFFF,
- NM_ITEM, NULL, (STRPTR)"#", 0, 0L, (APTR)KatalogInformation,
- NM_ITEM, NULL, (STRPTR)"H", 0, 0L, (APTR)KatalogHilfe,
- NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
- NM_ITEM, NULL, (STRPTR)"Q", 0, 0L, 0xFFFFFFFE,
-
- NM_TITLE, NULL, NULL, 0, NULL, NULL,
- NM_ITEM, NULL, (STRPTR)"Y", CHECKIT|MENUTOGGLE|CHECKED, 0L, (APTR)AutoSave,
-
- NM_TITLE, NULL, NULL, 0, NULL, NULL,
- NM_ITEM, NULL, (STRPTR)"F", 0, 0L, (APTR)Suchen,
-
- NM_END, NULL, NULL, 0, 0L, NULL };
-
- UWORD KatalogGTypes[] = {
- LISTVIEW_KIND,
- STRING_KIND,
- LISTVIEW_KIND,
- STRING_KIND
- };
-
- struct NewGadget KatalogNGad[] = {
- 346, -12, 277, 174, NULL, NULL, GD_Liste1, 0, NULL, (APTR)Liste1Clicked,
- 346, 161, 277, 19, NULL, NULL, GD_String1, 0, NULL, (APTR)String1Clicked,
- 0, -12, 339, 174, NULL, NULL, GD_Liste2, 0, NULL, (APTR)Liste2Clicked,
- 0, 161, 339, 19, NULL, NULL, GD_String2, 0, NULL, (APTR)String2Clicked
- };
-
- ULONG *KatalogGTags[] = {
- (ULONG *)(GTLV_Labels), &Liste1, (ULONG *)(TAG_DONE),
- (ULONG *)(GTST_MaxChars), (ULONG *)49, (ULONG *)(TAG_DONE),
- (ULONG *)(GTLV_Labels), &Liste2, (ULONG *)(TAG_DONE),
- (ULONG *)(GTST_MaxChars), (ULONG *)49, (ULONG *)(TAG_DONE)
- };
-
- int SetupScreen()
- {
- if ( ! ( Scr = LockPubScreen( PubScreenName )))
- {
- Error(GS(25,"Unable to lock public screen!"));
- return( 1L );
- }
-
- if(Scr->Height<300)
- LowRes=TRUE;
- if(LowRes==TRUE)
- {
- topaz11.ta_Name="topaz.font";
- topaz11.ta_YSize=9;
- }
- if ( ! ( Font = OpenDiskFont( &topaz11 )))
- {
- if(LowRes==FALSE)
- Error(GS(25,"Unable to open font: times.font 15"));
- else
- Error(GS(76,"Unable to open font: topaz.font 9"));
- return( 5L );
- }
-
- if ( ! ( VisualInfo=GetVisualInfoA( Scr, NULL )))
- {
- Error(GS(30,"Unable to get VisualInfo!"));
- return( 2L );
- }
-
- return( 0L );
- }
-
- void CloseDownScreen()
- {
- if ( VisualInfo ) {
- FreeVisualInfo( VisualInfo );
- VisualInfo = NULL;
- }
-
- if ( Scr ) {
- UnlockPubScreen( NULL, Scr );
- Scr = NULL;
- }
-
- if ( Font ) {
- CloseFont( Font );
- Font = NULL;
- }
- }
-
- void KatalogRender()
- {
- UWORD offx, offy;
- struct TagItem tagr[3];
-
- offx = OffsetX(KatalogWnd);
- offy = OffsetY(KatalogWnd);
-
- tagr[0].ti_Tag = GT_VisualInfo;
- tagr[0].ti_Data = VisualInfo;
- tagr[1].ti_Tag = GTBB_Recessed;
- tagr[1].ti_Data = TRUE;
- tagr[2].ti_Tag = TAG_DONE;
-
- if(LowRes==FALSE)
- DrawBevelBoxA( KatalogWnd->RPort, offx, offy + 184, 623, 41, &tagr);
- else
- DrawBevelBoxA( KatalogWnd->RPort, offx, offy + 149, 623, 41, &tagr);
- }
-
- int HandleKatalogIDCMP()
- {
- struct IntuiMessage *m;
- struct MenuItem *n;
- int (*func)();
- int running = 1;
-
- while( m = GTGetIMsg( KatalogWnd->UserPort )) {
-
- CopyMem(( char * )m, ( char * )&KatalogMsg, (long)sizeof( struct IntuiMessage ));
-
- GTReplyIMsg( m );
-
- switch ( KatalogMsg.Class ) {
-
- case IDCMP_REFRESHWINDOW:
- GTBeginRefresh( KatalogWnd );
- KatalogRender();
- GTEndRefresh( KatalogWnd, TRUE );
- break;
-
- case IDCMP_CLOSEWINDOW:
- if(FastExit==TRUE)
- running = 0;
- else
- running = 2;
- break;
-
- case IDCMP_GADGETUP:
- case IDCMP_GADGETDOWN:
- func = ( void * )(( struct Gadget * )KatalogMsg.IAddress )->UserData;
- func(KatalogMsg.Code);
- break;
-
- case IDCMP_MENUPICK:
- while( KatalogMsg.Code != MENUNULL ) {
- n = ItemAddress( KatalogMenus, KatalogMsg.Code );
- func = (void *)(GTMENUITEM_USERDATA( n ));
- if(!(func==0xFFFFFFFF))
- if(func==0xFFFFFFFE)
- running=0;
- else
- func(n);
- else
- running=2;
- KatalogMsg.Code = n->NextSelect;
- }
- break;
- }
- }
- return( running );
- }
-
- int OpenKatalogWindow()
- {
- struct TagItem tag[10];
- struct NewGadget ng;
- struct Gadget *g;
- UWORD lc, tc;
- UWORD offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
- if ( ! ( g = CreateContext( &KatalogGList )))
- {
- Error(GS(31,"Unable to create gadgets!"));
- return( 1L );
- }
-
- for( lc = 0, tc = 0; lc < Katalog_CNT; lc++ ) {
-
- CopyMem((char * )&KatalogNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
-
- ng.ng_VisualInfo = VisualInfo;
- ng.ng_TextAttr = &topaz11;
- ng.ng_LeftEdge += offx+4;
- ng.ng_TopEdge += offy+17;
- if(LowRes==TRUE)
- {
- if(KatalogGTypes[lc]==LISTVIEW_KIND)
- ng.ng_Height -= 35;
- else
- {
- ng.ng_TopEdge -= 31;
- ng.ng_Height = 13;
- }
- }
-
- KatalogGadgets[ lc ] = g = CreateGadgetA((ULONG)KatalogGTypes[ lc ], g, &ng, ( struct TagItem * )&KatalogGTags[ tc ] );
-
- while( KatalogGTags[ tc ] ) tc += 2;
- tc++;
-
- if ( NOT g )
- {
- Error(GS(31,"Unable to create gadgets!"));
- return( 2L );
- }
- }
-
- for(tc=0;tc<TEXTE;tc++)
- {
- if(KatalogNewMenu[tc].nm_Label==NULL)
- {
- Texte[tc]=GS(300+tc,Texte[tc]);
- KatalogNewMenu[tc].nm_Label=Texte[tc];
- }
- }
-
- tag[0].ti_Tag = GTMN_FrontPen;
- tag[0].ti_Data = 0L;
- tag[1].ti_Tag = TAG_DONE;
- if ( ! ( KatalogMenus = CreateMenusA( KatalogNewMenu, &tag )))
- {
- Error(GS(32,"Unable to create menus!"));
- return( 3L );
- }
-
- LayoutMenusA( KatalogMenus, VisualInfo, NULL );
-
- tag[0].ti_Tag=WA_Left;
- tag[0].ti_Data=KatalogLeft;
- tag[1].ti_Tag=WA_Top;
- tag[1].ti_Data=KatalogTop;
- tag[2].ti_Tag=WA_InnerWidth;
- tag[2].ti_Data=KatalogWidth;
- tag[3].ti_Tag=WA_InnerHeight;
- tag[3].ti_Data=KatalogHeight;
- if(LowRes==TRUE)
- {
- tag[1].ti_Data=0;
- tag[3].ti_Data-=35;
- }
- tag[4].ti_Tag=WA_IDCMP;
- tag[4].ti_Data=LISTVIEWIDCMP|STRINGIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
- tag[5].ti_Tag= WA_Flags;
- tag[5].ti_Data=WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_ACTIVATE,
- tag[6].ti_Tag=WA_Gadgets;
- tag[6].ti_Data=KatalogGList;
- tag[7].ti_Tag=WA_Title;
- tag[7].ti_Data=KatalogWdt;
- tag[8].ti_Tag=WA_PubScreen;
- tag[8].ti_Data=Scr;
- tag[9].ti_Tag=TAG_DONE;
-
- if ( ! ( KatalogWnd = OpenWindowTagList( NULL, &tag )))
- {
- Error(GS(33,"Unable to open window!"));
- return( 4L );
- }
-
- SetMenuStrip( KatalogWnd, KatalogMenus );
- GTRefreshWindow( KatalogWnd, NULL );
-
- KatalogRender();
-
- return( 0L );
- }
-
- void CloseKatalogWindow()
- {
- if ( KatalogMenus ) {
- ClearMenuStrip( KatalogWnd );
- FreeMenus( KatalogMenus );
- KatalogMenus = NULL; }
-
- if ( KatalogWnd ) {
- CloseWindow( KatalogWnd );
- KatalogWnd = NULL;
- }
-
- if ( KatalogGList ) {
- FreeGadgets( KatalogGList );
- KatalogGList = NULL;
- }
- }
-
-